Programmable logic devices (PLDs) are a well-known type of integrated circuit that can be programmed to perform specified logic functions. One type of PLD, the field programmable gate array (FPGA), typically includes an array of programmable tiles. These programmable tiles can include, for example, input/output blocks (IOBs), configurable logic blocks (CLBs), dedicated random access memory blocks (BRAM), multipliers, digital signal processing blocks (DSPs), processors, clock managers, delay lock loops (DLLs), etc. The programmable logic implements the logic of a user design using programmable elements that can include, for example, function generators, registers, arithmetic logic, etc. The programmable interconnect and programmable logic are typically programmed by loading a stream of configuration data into internal configuration memory cells that define how the programmable elements are configured. The configuration data can be read from memory (e.g., from an external PROM) or written into the FPGA by an external device. The collective states of the individual memory cells then determine the function of the FPGA. Another common programmable logic device is a complex programmable logic device (CPLD). For all of these programmable logic devices (PLDs), the functionality of the device is controlled by data bits provided to the device for that purpose. The data bits can be stored in volatile memory (e.g., static memory cells, as in FPGAs and some CPLDs), in non-volatile memory (e.g., FLASH memory, as in some CPLDs), or in any other type of memory cell.
However, such programmable devices require programming by the customer in order to be functional in the target operating system. Programmable devices are shipped using standard packaging methods, most commonly via a tray or tube, and therefore must be removed to be programmed. The programming steps required to configure the device can be time consuming and can add overall cost to the development project or resulting product. Some product manufacturers use contract programming services provided by integrated circuit manufacturers, integrated circuit distributors, or third party programmers. Many of these programming systems use device handlers to automatically extract a device from a tray, put the device in a socket, program the device, and then place it in a tray. However, these systems are very costly. Other contract programming vendors perform a large amount of the device handling in a manual fashion, which is also very costly in terms of labor. While these packages for shipping or storing programmable devices are typically non-conductive, static dissipative types of plastics which protect the device, they provide little other function or benefit.
Accordingly, there is a need for an improved integrated circuit storage device, such as a tray or tube for storing integrated circuits, and a method of and system for communicating with integrated circuits in a storage tray.